package file;

import java.io.File;
import java.util.Scanner;

public class Demo3 {
    //案例1、扫描指定⽬录，并找到名称中包含指定字符的所有普通⽂件（不包含⽬录），
    // 并且后续询问⽤⼾是否要删除该⽂件
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要搜索的根目录: ");
        String rootDir = scanner.next();
        File rootFile = new File(rootDir);
        //查看 File对象是否是目录
        if (!rootFile.isDirectory()) {
            System.out.println("输入的不是目录");
            return;
        }
        System.out.println("输入要删除的关键字: ");
        String keyword = scanner.next();
        //遍历输入的根目录下的所有目录
        scanDir(rootFile,keyword);
    }

    private static void scanDir(File rootFile, String keyword) {
        //1、列出当前目录中的所有内容
        File[] files = rootFile.listFiles();
        //判空
        if (files == null) {
            return;
        }
        //2、遍历当前目录中的所有内容
        for (File file : files) {
            System.out.println("遍历的文件和路径: " + file.getAbsolutePath());
            //3、判断这个 file 是否是文件还是目录
            if (file.isFile()) {
                //如果是 普通文件，查看是否存在 keyword 关键字
                dealFile(file,keyword);
            }else {
                //如果是 目录的话，就继续进行 递归遍历这个目录
                scanDir(file,keyword);
            }
        }
    }

    private static void dealFile(File file, String keyword) {
        if (file.getName().contains(keyword)) {
            // 如果里面存在关键字，进行删除
            System.out.println("发现文件: " + file.getAbsolutePath() + ", 存在关键字，是否删除 (删除输入y/保存输入n)");
            Scanner scanner = new Scanner(System.in);
            String string = scanner.next();
            if (string.equalsIgnoreCase("y")) {
                file.delete();
                System.out.println("文件已经删除");
            }
        }
    }
}
